package com.yuwei.recyclerviewdemo.adapter;

import android.content.Context;

import java.util.List;

/**
 * @author 崔健伟
 * @version V1.0
 * @Title: HasLoadMoreAdapter.java
 * @Package com.yuwei.recyclerviewdemo
 * @Description: 带有上拉加载的adapter
 * @date 2016/11/21 10:09
 */
public abstract class HasLoadMoreAdapter<T> extends MultiItemCommonAdapter<T> {
    protected boolean loadMore;//是否需要上拉加载，true为不需要，false为需要

    public HasLoadMoreAdapter(Context mContext, List<T> mDatas, MultiItemTypeSupport<T> multiItemTypeSupport) {
        super(mContext, mDatas, multiItemTypeSupport);
    }

    /**
     * @author: cuijianwei
     * @time: 2016/11/21 14:38
     * @desc: 获取item的总数量，如果需要上拉加载则显示list.size()+1个，否则返回父类默认返回的count
     **/
    @Override
    public int getItemCount() {
        if (!loadMore) {
            return mDatas.size() + 1;
        } else {
            return super.getItemCount();
        }
    }

    /**
     * @author: cuijianwei
     * @time: 2016/11/21 14:39
     * @desc: 需要判断item的count是不是list.zize()+1个&&需要上拉加载，或者item的count是list.size()个&&不需要上拉加载，满足以上条件继承父类方法
     **/
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        if (position < getItemCount() - 1 && !loadMore || position < getItemCount() && loadMore) {
            super.onBindViewHolder(holder, position);
        }
    }

    /**
     * @author: cuijianwei
     * @time: 2016/11/21 14:43
     * @desc: 对外的方法，用于设置是否需要上拉加载
     **/
    public void setLoadMore(boolean loadMore) {
        this.loadMore = loadMore;
    }

    /**
     * @author: cuijianwei
     * @time: 2016/11/21 14:43
     * @desc: 对外的方法，用于获取是否需要上拉加载
     **/
    public boolean getLoadMore() {
        return loadMore;
    }

    /**
     * @author: cuijianwei
     * @time: 2016/11/21 14:44
     * @desc: 对外的方法，用于获取某一条item的type类型
     **/
    public int getItemType(int position) {
        return getItemViewType(position);
    }
}
